package com.aaron.remoting.dto;

import com.aaron.entity.RpcServiceProperties;
import lombok.*;

import java.io.Serializable;

// 请求实体类
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Builder
@ToString
public class RpcRequest implements Serializable {

    private static final long serialVersionUID = 1905122041950251207L;
    private String requestId;
    private String interfaceName;
    private String methodName;
    // 参数对象数组
    private Object[] parameters;
    // 参数类型数组，内部参数用泛型表示，可以存放Object类型以及其子类
    private Class<?>[] paramTypes;

    // 下面的这两个属性
    // 主要是为了后序版本升级提供可能
    private String version;
    // group字段主要用于处理一个接口有多个实现类的情况
    private String group;

    public String getRpcServiceName() {
        return this.getInterfaceName() + this.getGroup() + this.getVersion();
    }
}
